package com.ruoyi.asms.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 故障资产设备信息对象 asms_fault_asset
 *
 * @author yfkj
 * @date 2021-11-01
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AsmsFaultAsset extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 故障资产设备信息主键
     */
    @TableField(exist = true)
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "${comment}")
    private Long faultAssetId;

    /**
     * 故障信息外键
     */
    @Excel(name = "故障信息外键")
    @TableField(exist = true)
    @ApiModelProperty(value = "故障信息外键")
    private Long faultId;

    /**
     * 故障资产外键
     */
    @Excel(name = "故障资产外键")
    @TableField(exist = true)
    @ApiModelProperty(value = "故障资产外键")
    private Long assetId;

    /**
     * 资产设备故障类型外键
     */
    @Excel(name = "资产设备故障类型外键")
    @TableField(exist = true)
    @ApiModelProperty(value = "资产设备故障类型外键")
    private Long assetFaultTypeId;

    /**
     * 故障描述
     */
    @Excel(name = "故障描述")
    @TableField(exist = true)
    @ApiModelProperty(value = "故障描述")
    private String description;

    /**
     * 故障描述图片
     */
    @Excel(name = "故障描述图片")
    @TableField(exist = true)
    @ApiModelProperty(value = "故障描述图片")
    private String descriptionImages;

    /**
     * 故障描述视频
     */
    @Excel(name = "故障描述视频")
    @TableField(exist = true)
    @ApiModelProperty(value = "故障描述视频")
    private String descriptionVideos;

    /**
     * 故障处理所属阶段(1、故障报修阶段；2、故障派单阶段；3、故障处理阶段；4、故障处理结果确认阶段；5、投诉与反馈确认阶段)
     */
    @Excel(name = "故障处理所属阶段(1、故障报修阶段；2、故障派单阶段；3、故障处理阶段；4、故障处理结果确认阶段；5、投诉与反馈确认阶段)")
    @TableField(exist = true)
    @ApiModelProperty(value = "故障处理所属阶段(1、故障报修阶段；2、故障派单阶段；3、故障处理阶段；4、故障处理结果确认阶段；5、投诉与反馈确认阶段)")
    private Integer stage;

    /**
     * 故障处理是否结束(0是，1否)
     */
    @Excel(name = "故障处理是否结束(0是，1否)")
    @TableField(exist = true)
    @ApiModelProperty(value = "故障处理是否结束(0是，1否)")
    private Integer isFinish;

    /**
     * 资产标准型号(冗余设计，查询列表时避免跨库查询)
     */
    @Excel(name = "资产标准型号(冗余设计，查询列表时避免跨库查询)")
    @TableField(exist = true)
    @ApiModelProperty(value = "资产标准型号(冗余设计，查询列表时避免跨库查询)")
    private Long assetTemplateId;

    /**
     * 资产品牌(冗余设计，查询列表时避免跨库查询)
     */
    @Excel(name = "资产品牌(冗余设计，查询列表时避免跨库查询)")
    @TableField(exist = true)
    @ApiModelProperty(value = "资产品牌(冗余设计，查询列表时避免跨库查询)")
    private Long brandId;

    /**
     * 资产所属批次(冗余设计，查询列表时避免跨库查询)
     */
    @Excel(name = "资产所属批次(冗余设计，查询列表时避免跨库查询)")
    @TableField(exist = true)
    @ApiModelProperty(value = "资产所属批次(冗余设计，查询列表时避免跨库查询)")
    private Long projectId;

    /**
     * 资产类型信息主键(冗余设计，查询列表时避免跨库查询)
     */
    @Excel(name = "资产类型信息主键(冗余设计，查询列表时避免跨库查询)")
    @TableField(exist = true)
    @ApiModelProperty(value = "资产类型信息主键(冗余设计，查询列表时避免跨库查询)")
    private Long assetTypeId;

    /**
     * 类型祖级列表(冗余设计，查询列表时避免跨库查询)
     */
    @Excel(name = "类型祖级列表(冗余设计，查询列表时避免跨库查询)")
    @TableField(exist = true)
    @ApiModelProperty(value = "类型祖级列表(冗余设计，查询列表时避免跨库查询)")
    private String assetTypeAncestors;

    /**
     * 售后维护人(冗余设计，查询列表时避免跨库查询)
     */
    @Excel(name = "售后维护人(冗余设计，查询列表时避免跨库查询)")
    @TableField(exist = true)
    @ApiModelProperty(value = "售后维护人(冗余设计，查询列表时避免跨库查询)")
    private Long faultResolveUserId;

    /**
     * 售后维护公司(冗余设计，查询列表时避免跨库查询)
     */
    @Excel(name = "售后维护公司(冗余设计，查询列表时避免跨库查询)")
    @TableField(exist = true)
    @ApiModelProperty(value = "售后维护公司(冗余设计，查询列表时避免跨库查询)")
    private Long maintenanceDeptId;

    /**
     * 维护部门祖级列表(冗余设计，查询列表时避免跨库查询)
     */
    @Excel(name = "维护部门祖级列表(冗余设计，查询列表时避免跨库查询)")
    @TableField(exist = true)
    @ApiModelProperty(value = "维护部门祖级列表(冗余设计，查询列表时避免跨库查询)")
    private String maintenanceDeptAncestors;

    /**
     * 故障资产所属组织部门
     */
    @Excel(name = "故障资产所有者部门")
    @TableField(exist = true)
    @ApiModelProperty(value = "故障资产所有者部门")
    private Long ownDeptId;

    /**
     * 故障资产所属组织部门祖级列表
     */
    @Excel(name = "故障资产所有者部门祖级列表")
    @TableField(exist = true)
    @ApiModelProperty(value = "故障资产所有者部门祖级列表")
    private String ownDeptAncestors;

    /**
     * 使用部门祖级列表（冗余设计，便于查询）
     */
    @TableField(exist = true)
    @ApiModelProperty(value = "故障资产使用部门")
    private Long useDeptId;

    @Excel(name = "使用部门祖级列表", readConverterExp = "冗=余设计，便于查询")
    @TableField(exist = true)
    @ApiModelProperty(value = "使用部门祖级列表")
    private String useDeptAncestors;

    @TableField(exist = true)
    @ApiModelProperty(value = "催单时间")
    private Long urguWorkTime;

    public static final String FAULT_ASSET_ID = "fault_asset_id";
    public static final String FAULT_ID = "fault_id";
    public static final String ASSET_ID = "asset_id";
    public static final String ASSET_FAULT_TYPE_ID = "asset_fault_type_id";
    public static final String DESCRIPTION = "description";
    public static final String DESCRIPTION_IMAGES = "description_images";
    public static final String DESCRIPTION_VIDEOS = "description_videos";
    public static final String STAGE = "stage";
    public static final String IS_FINISH = "is_finish";
    public static final String CREATE_BY = "create_by";
    public static final String CREATE_TIME = "create_time";
    public static final String UPDATE_BY = "update_by";
    public static final String UPDATE_TIME = "update_time";
    public static final String REMARK = "remark";
    public static final String ASSET_TEMPLATE_ID = "asset_template_id";
    public static final String BRAND_ID = "brand_id";
    public static final String PROJECT_ID = "project_id";
    public static final String ASSET_TYPE_ID = "asset_type_id";
    public static final String ASSET_TYPE_ANCESTORS = "asset_type_ancestors";
    public static final String FAULT_RESOLVE_USER_ID = "fault_resolve_user_id";
    public static final String MAINTENANCE_DEPT_ID = "maintenance_dept_id";
    public static final String MAINTENANCE_DEPT_ANCESTORS = "maintenance_dept_ancestors";
    public static final String OWN_DEPT_ID = "own_dept_id";
    public static final String USE_DEPT_ANCESTORS = "use_dept_ancestors";
    public static final String USE_DEPT_ID = "use_dept_id";
    public static final String URGU_WORK_TIME = "urgu_work_time";

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("faultAssetId", getFaultAssetId())
                .append("faultId", getFaultId())
                .append("assetId", getAssetId())
                .append("assetFaultTypeId", getAssetFaultTypeId())
                .append("description", getDescription())
                .append("descriptionImages", getDescriptionImages())
                .append("descriptionVideos", getDescriptionVideos())
                .append("stage", getStage())
                .append("isFinish", getIsFinish())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .append("assetTemplateId", getAssetTemplateId())
                .append("brandId", getBrandId())
                .append("projectId", getProjectId())
                .append("assetTypeId", getAssetTypeId())
                .append("assetTypeAncestors", getAssetTypeAncestors())
                .append("faultResolveUserId", getFaultResolveUserId())
                .append("maintenanceDeptId", getMaintenanceDeptId())
                .append("maintenanceDeptAncestors", getMaintenanceDeptAncestors())
                .toString();
    }
}
